﻿/************************************************
 * Author       :   XXY
 * Blog         :   https://www.cnblogs.com/jzyl
 * Gitee        :   https://gitee.com/xiaobaichong
 * Email        :   1047185209@QQ.com
 * FileName     :   ButtonToggle.cs
 * CreateData   :   2024/3/4 13:41:08
 * UnityVersion :   2021.3.30f1c1
 * Description  :   按钮开关组
************************************************/

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class ButtonToggleGroup : MonoBehaviour
{
    public bool allowSwitchOff;
    public UnityEvent<ButtonToggle> OnToggleEvent;
    ButtonToggle isOnToggle;
    private List<ButtonToggle> m_Toggles = new List<ButtonToggle>();

    /// <summary>
    /// 选中的 ButtonToggle
    /// </summary>
    public ButtonToggle OnButtonToggle => isOnToggle;
    public void Add(ButtonToggle button)
    {
        if (button.IsOn)
        {
            if (isOnToggle)
            {
                button.NotifyToggleOn(false, false);
            }
            else
            {
                isOnToggle = button;
            }
        }
        m_Toggles.Add(button);
    }
    public void Sub(ButtonToggle button)
    {
        if (isOnToggle == button)
        {
            isOnToggle = null;
            OnToggleEvent?.Invoke(isOnToggle);
        }
        m_Toggles.Remove(button);
    }
    /// <summary>
    /// 切换开关
    /// </summary>
    /// <param name="button"></param>
    public void ChangeToggle(ButtonToggle button)
    {
        if (button.IsOn)
        {
            if (isOnToggle)
            {
                isOnToggle.NotifyToggleOn(false, false);
            }
            isOnToggle = button;
            OnToggleEvent?.Invoke(isOnToggle);
        }
        else if (button == isOnToggle)
        {
            if (allowSwitchOff)
            {
                isOnToggle = null;
                OnToggleEvent?.Invoke(isOnToggle);
            }
            else
            {
                isOnToggle.NotifyToggleOn(true, false);
            }
        }
    }
}
